package vcp.server.factories;

import java.util.HashMap;

import vcp.server.DAO.CarDAO;
import vcp.server.DAO.ComplaintDAO;
import vcp.server.DAO.ComplaintHistoryDAO;
import vcp.server.DAO.CustomerDAO;
import vcp.server.DAO.DayStatisticsDAO;
import vcp.server.DAO.LotDAO;
import vcp.server.DAO.PeriodicReportDAO;
import vcp.server.DAO.SiteCostUpdatesDAO;
import vcp.server.DAO.SiteDAO;
import vcp.server.DAO.SubscriptionDAO;
import vcp.server.DAO.SubscriptionHistoryDAO;
import vcp.server.DAO.UserDAO;
import vcp.server.DAO.WeekStatisticsDAO;
import vcp.server.DAO.WorkerDAO;
import vcp.server.DAO.interfaces.IGenericDAO;

public abstract class DAOFactoryAbstract
{
	protected final HashMap<String, IGenericDAO<?, ?>> daoMap;

	protected DAOFactoryAbstract()
	{
		this.daoMap = new HashMap<>();
	}

	public abstract UserDAO getUserDAO();

	public abstract WorkerDAO getWorkerDAO();

	public abstract CustomerDAO getCustomerDAO();

	public abstract CarDAO getCarDAO();

	public abstract SubscriptionDAO getSubscriptionDAO();

	public abstract SubscriptionHistoryDAO getSubscriptionHistoryDAO();

	public abstract ComplaintDAO getComplaintDAO();

	public abstract ComplaintHistoryDAO getComplaintHistoryDAO();

	public abstract SiteDAO getSiteDAO();

	public abstract SiteCostUpdatesDAO getSiteCostUpdatesDAO();

	public abstract LotDAO getLotDAO();

	public abstract PeriodicReportDAO getPeriodicReportDAO();

	public abstract DayStatisticsDAO getDayStatisticsDAO();

	public abstract WeekStatisticsDAO getWeekStatisticsDAO();

}
